package com.zzq.task;


import com.zzq.mapper.TendererInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;

@Component
@Slf4j
public class OrderTask {

    @Autowired
    private TendererInfoMapper tendererInfoMapper;

    // 处理过期招标项目
    @Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
    public void processExpiredTenders() {
        log.info("开始处理过期招标项目...");

        // 1. 计算时间点（当前时间减去60分钟）
        LocalDateTime cutoffTime = LocalDateTime.now().minusMinutes(60);

        // 2. 查询符合条件的招标项目
        List<String> tenderIds = tendererInfoMapper.getByStatusAndTendererTimeLT("招标", cutoffTime);

        // 3. 安全处理空值
        if (tenderIds == null || tenderIds.isEmpty()) {
            log.info("未找到需要处理的招标项目");
            return;
        }

        log.info("发现 {} 个过期招标项目需要处理", tenderIds.size());

        // 4. 批量更新状态
        int updatedCount = 0;
        for (String tenderId : tenderIds) {
            try {
                tendererInfoMapper.TendererTimeLTUpdateStatus(tenderId); // 更新为"已截至"
                updatedCount++;
            } catch (Exception e) {
                log.error("更新招标项目状态失败: ID={}, 错误: {}", tenderId, e.getMessage());
            }
        }

        log.info("成功更新 {} 个项目状态为'已截至'", updatedCount);
    }
}
